MetaObjectHandler的使用 |
您所在的位置:网站首页 › mybatisplus mongodb › MetaObjectHandler的使用 |
使用场景
在数据库中插入数据或者更新数据时,往往伴随的时间的更新,此时又不想用数据库给定的时间,那么我们就可以使用mybatis-plus中的MetaObjectHandler接口 来实现时间更新的目的 MetaObjectHandler接口是mybatis-plus为我们提供的的一个扩展接口,我们可以利用这个接口在我们插入或者更新数据的时候,为一些字段指定默认值。 复制代码 MetaObjectHandler使用方法配置好项目环境以后 导入mybatis-plus-boot-starterpom 文件 com.baomidou mybatis-plus-boot-starter 3.0.5 复制代码设计好相对应的sql,找到需要操纵的变量名 在实体类中添加 @TableField注解 FieldFill.INSERT表示只是插入时生效 FieldFill.INSERT_UPDATE 表示插入和更新时生效 /** * 创建时间 */ @TableField(fill = FieldFill.INSERT) private Date gmtCreate; @TableField(fill = FieldFill.INSERT_UPDATE) private Date gmtModified; 复制代码在config目录下创建Myandler类实现MetaObjectHandler 注:需要加上@Component注解 @Component public class MyHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { System.out.println("添加插入时间"); this.setFieldValByName("gmtCreate",new Date(),metaObject); this.setFieldValByName("gmtModified",new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { System.out.println("添加更新时间"); this.setFieldValByName("gmtModified",new Date(),metaObject); } } 复制代码 测试测试类 @SpringBootTest public class UserMemberTest { @Resource private UmsMemberMapper umsMemberMapper; @Test void testInsert(){ UmsMember w =new UmsMember(); w.setUsername("whj"); w.setNickName("nick"); w.setStatus(0); w.setEmail("[email protected]"); w.setNote("note"); umsMemberMapper.insert(w); } @Test void testUpdate(){ UmsMember w = new UmsMember(); w.setId(70L); umsMemberMapper.updateById(w); } } 复制代码首先执行testInsert() 方法,可以看到对应的变量名中的时间是相同的 其次执行 testUpdate()方法,可以看到时间上的不同 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |